<?php 
    require("controleur/config_bdd.php");

    //$bdd  = mysqli_connect('localhost', 'root', '', 'VirginieExotique');

    if (!$bdd) {
        echo "Connection failed!";
    }

    if (
        !empty($_POST['nom_user']) &&
        !empty($_POST['prenom_user']) &&
        !empty($_POST['datenaissance_user']) &&
        !empty($_POST['sexe_user']) &&
        !empty($_POST['numtel_user']) &&
        !empty($_POST['pseudo_user']) &&
        !empty($_POST['email_user']) &&
        !empty($_POST['password_user']) &&
        !empty($_POST['password_retype'])
    ) {
        /*$sexe_user = $_POST['sexe_user'];
        $nom_user = $_POST['nom_user'];
        $prenom_user = $_POST['prenom_user'];
        $datenaissance_user = $_POST['datenaissance_user'];
        $pseudo_user = $_POST['pseudo_user'];
        $email_user = $_POST['email_user'];
        $password_user = $_POST['password_user'];
        $password_retype = $_POST['password_retype'];*/

        //if  (!empty($_POST['sexe_user']) && !empty($_POST['nom_user']) && !empty($_POST['prenom_user']) && !empty($_POST['datenaissance_user'])! && !empty($_POST['pseudo_user']) && !empty($_POST['email_user']) && !empty($_POST['password_user']) && !empty($_POST['password_retype'])){
        // Patch XSS
        $nom_user = htmlspecialchars($_POST['nom_user']);
        $prenom_user = htmlspecialchars($_POST['prenom_user']);
        $datenaissance_user = date('Y-m-d', strtotime($_POST['datenaissance_user']));
        $sexe_user = htmlspecialchars($_POST['sexe_user']);
        $numtel_user = htmlspecialchars($_POST['numtel_user']);
        $pseudo_user = htmlspecialchars($_POST['pseudo_user']);
        $email_user = htmlspecialchars($_POST['email_user']);
        $password_user = htmlspecialchars($_POST['password_user']);
        $password_retype = htmlspecialchars($_POST['password_retype']);
        $statut_user = htmlspecialchars('client');

        // On vérifie si l'utilisateur existe
        $check = $bdd->prepare('SELECT nom_user,prenom_user,datenaissance_user,pseudo_user, email_user, password_user FROM user_ve WHERE email_user = ?');
        $check->execute(array($email_user));
        $data = $check->fetch();
        $row = $check->rowCount();

        $nom_user = strtoupper($nom_user);// on transforme toute les lettres minuscule en majuscule
        $prenom_user = ucfirst(strtolower($prenom_user));// on transforme la lettres du debut en minuscule en majuscule
        $email_user = strtolower($email_user); // on transforme toute les lettres majuscule en minuscule pour éviter que Foo@gmail.com et foo@gmail.com soient deux compte différents ..
        
        /**/echo $sexe_user . '<br>';
        echo $nom_user . '<br>';
        echo $prenom_user . '<br>';
        echo $datenaissance_user . '<br>';
        echo $pseudo_user . '<br>';
        echo $email_user . '<br>';
        echo $password_user . '<br>';
        echo $password_retype . '<br>';
        echo $statut_user . '<br>';

        if($row == 0){ 
            if($nom_user){
                if(strlen($prenom_user)){
                    if(strlen($datenaissance_user)){
                        if($sexe_user){
                            if($numtel_user){
                                if(strlen($pseudo_user) <= 100){ // On verifie que la longueur du pseudo <= 100
                                    if(strlen($email_user) <= 100){ // On verifie que la longueur du mail <= 100
                                        if(filter_var($email_user, FILTER_VALIDATE_EMAIL)){ // Si l'email est de la bonne forme
                                            if (getStrength($password_user) > 1) {  // Vérifiez la force du mot de passe
                                                if($password_user === $password_retype){ // si les deux mdp saisis sont bon
                                                    // On hash le mot de passe avec Bcrypt, via un coût de 12
                                                    $cost = ['cost' => 12];
                                                    $password_user = password_hash($password_user, PASSWORD_BCRYPT, $cost);
                                                    
                                                    // On stock l'adresse IP
                                                    $ip_user = $_SERVER['REMOTE_ADDR']; 
                                                    /*
                                                    ATTENTION
                                                    Verifiez bien que le champs token est présent dans votre table utilisateurs, il a été rajouté APRÈS la vidéo
                                                    le .sql est dispo pensez à l'importer ! 
                                                    ATTENTION
                                                    */
                                                    // On insère dans la base de données
                                                    echo 'vu';
                                                    $insert = $bdd->prepare('INSERT INTO client_ve(nom_user,prenom_user,datenaissance_user,sexe_user,numtel_user,pseudo_user, email_user, password_user, statut_user, ip_user, token_user) VALUES(:nom_user,:prenom_user,:datenaissance_user,:sexe_user,:numtel_user,:pseudo_user, :email_user, :password_user, "client", :ip_user, :token_user)');
                                                    $insert->execute(array(
                                                        'nom_user' => $nom_user,
                                                        'prenom_user' => $prenom_user,
                                                        'datenaissance_user' => $datenaissance_user,
                                                        'sexe_user' => $sexe_user,
                                                        'numtel_user'=> $numtel_user,
                                                        'pseudo_user' => $pseudo_user,
                                                        'email_user' => $email_user,
                                                        'password_user' => $password_user,
                                                        //'statut_user' => $statut_user,
                                                        'ip_user' => $ip_user,
                                                        'token_user' => bin2hex(openssl_random_pseudo_bytes(64))
                                                    ));
                                                    // On redirige avec le message de succès
                                                    header('Location:inscription.php?reg_err=success');
                                                    die();
                                                }else{ header('Location: inscription.php?reg_err=password'); die();}
                                            } else { header('Location: inscription.php?reg_err=weak_password'); die();}
                                        }else{ header('Location: inscription.php?reg_err=email'); die();}
                                    }else{ header('Location: inscription.php?reg_err=email_length'); die();}
                                }else{ header('Location: inscription.php?reg_err=pseudo_length'); die();}
                            }else{ header('Location: inscription.php?reg_err=ntel_miss'); die();}
                        }else{ header('Location: inscription.php?reg_err=sx_miss'); die();}
                    }else{ header('Location: inscription.php?reg_err=dob_miss'); die();}
                }else{ header('Location: inscription.php?reg_err=name_miss'); die();}   
            }else{ header('Location: inscription.php?reg_err=surname_miss'); die();}
        }else{ header('Location: inscription.php?reg_err=already'); die();}
    }else{echo 'not user';}

    function getStrength($password) {
        $hasSpecialChar = preg_match('/[^A-Za-z0-9]/', $password);
        if (!$hasSpecialChar) {
            return 1;  // Faible
        } else if ($hasSpecialChar && strlen($password) < 8) {
            return 2;  // Moyen
        } else if ($hasSpecialChar && strlen($password) >= 8) {
            return 3;  // Fort
        }
        return 0;
    }
?>
<!--?php 
    require("controleur/config_bdd.php");

    //$bdd  = mysqli_connect('localhost', 'root', '', 'VirginieExotique');

    if (!$bdd) {
        echo "Connection failed!";
    }

    if (
        !empty($_POST['nom_user']) &&
        !empty($_POST['prenom_user']) &&
        !empty($_POST['datenaissance_user']) &&
        !empty($_POST['sexe_user']) &&
        !empty($_POST['numtel_user']) &&
        !empty($_POST['pseudo_user']) &&
        !empty($_POST['email_user']) &&
        !empty($_POST['password_user']) &&
        !empty($_POST['password_retype'])
    ) {
        /*$sexe_user = $_POST['sexe_user'];
        $nom_user = $_POST['nom_user'];
        $prenom_user = $_POST['prenom_user'];
        $datenaissance_user = $_POST['datenaissance_user'];
        $pseudo_user = $_POST['pseudo_user'];
        $email_user = $_POST['email_user'];
        $password_user = $_POST['password_user'];
        $password_retype = $_POST['password_retype'];*/

        //if  (!empty($_POST['sexe_user']) && !empty($_POST['nom_user']) && !empty($_POST['prenom_user']) && !empty($_POST['datenaissance_user'])! && !empty($_POST['pseudo_user']) && !empty($_POST['email_user']) && !empty($_POST['password_user']) && !empty($_POST['password_retype'])){
        // Patch XSS
        $nom_user = htmlspecialchars($_POST['nom_user']);
        $prenom_user = htmlspecialchars($_POST['prenom_user']);
        $datenaissance_user = date('Y-m-d', strtotime($_POST['datenaissance_user']));
        $sexe_user = htmlspecialchars($_POST['sexe_user']);
        $numtel_user = htmlspecialchars($_POST['numtel_user']);
        $pseudo_user = htmlspecialchars($_POST['pseudo_user']);
        $email_user = htmlspecialchars($_POST['email_user']);
        $password_user = htmlspecialchars($_POST['password_user']);
        $password_retype = htmlspecialchars($_POST['password_retype']);
        $statut_user = htmlspecialchars('client');

        // On vérifie si l'utilisateur existe
        $check = $bdd->prepare('SELECT nom_user,prenom_user,datenaissance_user,pseudo_user, email_user, password_user FROM user_ve WHERE email_user = ?');
        $check->execute(array($email_user));
        $data = $check->fetch();
        $row = $check->rowCount();

        $nom_user = strtoupper($nom_user);// on transforme toute les lettres minuscule en majuscule
        $prenom_user = ucfirst(strtolower($prenom_user));// on transforme la lettres du debut en minuscule en majuscule
        $email_user = strtolower($email_user); // on transforme toute les lettres majuscule en minuscule pour éviter que Foo@gmail.com et foo@gmail.com soient deux compte différents ..
        
        /**/echo $sexe_user . '<br>';
        echo $nom_user . '<br>';
        echo $prenom_user . '<br>';
        echo $datenaissance_user . '<br>';
        echo $pseudo_user . '<br>';
        echo $email_user . '<br>';
        echo $password_user . '<br>';
        echo $password_retype . '<br>';
        echo $statut_user . '<br>';

        if($row == 0){ 
            if($nom_user){
                if(strlen($prenom_user)){
                    if(strlen($datenaissance_user)){
                        if($sexe_user){
                            if($numtel_user){
                                if(strlen($pseudo_user) <= 100){ // On verifie que la longueur du pseudo <= 100
                                    if(strlen($email_user) <= 100){ // On verifie que la longueur du mail <= 100
                                        if(filter_var($email_user, FILTER_VALIDATE_EMAIL)){ // Si l'email est de la bonne forme
                                            if($password_user === $password_retype){ // si les deux mdp saisis sont bon
                                                // On hash le mot de passe avec Bcrypt, via un coût de 12
                                                $cost = ['cost' => 12];
                                                $password_user = password_hash($password_user, PASSWORD_BCRYPT, $cost);
                                                
                                                // On stock l'adresse IP
                                                $ip_user = $_SERVER['REMOTE_ADDR']; 
                                                /*
                                                ATTENTION
                                                Verifiez bien que le champs token est présent dans votre table utilisateurs, il a été rajouté APRÈS la vidéo
                                                le .sql est dispo pensez à l'importer ! 
                                                ATTENTION
                                                */
                                                // On insère dans la base de données
                                                echo 'vu';
                                                $insert = $bdd->prepare('INSERT INTO client_ve(nom_user,prenom_user,datenaissance_user,sexe_user,numtel_user,pseudo_user, email_user, password_user, statut_user, ip_user, token_user) VALUES(:nom_user,:prenom_user,:datenaissance_user,:sexe_user,:numtel_user,:pseudo_user, :email_user, :password_user, "client", :ip_user, :token_user)');
                                                $insert->execute(array(
                                                    'nom_user' => $nom_user,
                                                    'prenom_user' => $prenom_user,
                                                    'datenaissance_user' => $datenaissance_user,
                                                    'sexe_user' => $sexe_user,
                                                    'numtel_user'=> $numtel_user,
                                                    'pseudo_user' => $pseudo_user,
                                                    'email_user' => $email_user,
                                                    'password_user' => $password_user,
                                                    //'statut_user' => $statut_user,
                                                    'ip_user' => $ip_user,
                                                    'token_user' => bin2hex(openssl_random_pseudo_bytes(64))
                                                ));
                                                // On redirige avec le message de succès
                                                header('Location:inscription.php?reg_err=success');
                                                die();
                                            }else{ header('Location: inscription.php?reg_err=password'); die();}
                                        }else{ header('Location: inscription.php?reg_err=email'); die();}
                                    }else{ header('Location: inscription.php?reg_err=email_length'); die();}
                                }else{ header('Location: inscription.php?reg_err=pseudo_length'); die();}
                            }else{ header('Location: inscription.php?reg_err=ntel_miss'); die();}
                        }else{ header('Location: inscription.php?reg_err=sx_miss'); die();}
                    }else{ header('Location: inscription.php?reg_err=dob_miss'); die();}
                }else{ header('Location: inscription.php?reg_err=name_miss'); die();}   
            }else{ header('Location: inscription.php?reg_err=surname_miss'); die();}
        }else{ header('Location: inscription.php?reg_err=already'); die();}
    }else{echo 'not user';}
?-->
<!--?php 
    try 
    {
        $bdd = new PDO("mysql:host=localhost;dbname=blog;charset=utf8", "root", "");
    }
    catch(PDOException $e)
    {
        die('Erreur : '.$e->getMessage());
    }

    // Si les variables existent et qu'elles ne sont pas vides
    if(!empty($_POST['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_retype']))
    {
        // Patch XSS
        $pseudo = htmlspecialchars($_POST['pseudo']);
        $email = htmlspecialchars($_POST['email']);
        $password = htmlspecialchars($_POST['password']);
        $password_retype = htmlspecialchars($_POST['password_retype']);

        // On vérifie si l'utilisateur existe
        $check = $bdd->prepare('SELECT pseudo, email, password FROM utilisateurs WHERE email = ?');
        $check->execute(array($email));
        $data = $check->fetch();
        $row = $check->rowCount();

        $email = strtolower($email); // on transforme toute les lettres majuscule en minuscule pour éviter que Foo@gmail.com et foo@gmail.com soient deux compte différents ..
        
        // Si la requete renvoie un 0 alors l'utilisateur n'existe pas 
        if($row == 0){ 
            if(strlen($pseudo) <= 255){ // On verifie que la longueur du pseudo <= 100
                if(strlen($email) <= 255){ // On verifie que la longueur du mail <= 100
                    if(filter_var($email, FILTER_VALIDATE_EMAIL)){ // Si l'email est de la bonne forme
                        if($password === $password_retype){ // si les deux mdp saisis sont bon

                            // On hash le mot de passe avec Bcrypt, via un coût de 12
                            $cost = ['cost' => 12];
                            $password = password_hash($password, PASSWORD_BCRYPT, $cost);
                            
                            // On stock l'adresse IP
                            $ip = $_SERVER['REMOTE_ADDR']; 
                             /*
                              ATTENTION
                              Verifiez bien que le champs token est présent dans votre table utilisateurs, il a été rajouté APRÈS la vidéo
                              le .sql est dispo pensez à l'importer ! 
                              ATTENTION
                            */
                            // On insère dans la base de données
                            $insert = $bdd->prepare('INSERT INTO utilisateurs(pseudo, email, password,avatar, ip, token) VALUES(:pseudo, :email, :password, :ip, :token)');
                            $insert->execute(array(
                                'pseudo' => $pseudo,
                                'email' => $email,
                                'password' => $password,
                                'avatar' => "disprofil.jpg",
                                'ip' => $ip,
                                'token' => bin2hex(openssl_random_pseudo_bytes(64))
                            ));
                            // On redirige avec le message de succès
                            header('Location:inscription.php?reg_err=success');
                            die();
                        }else{ header('Location: inscription.php?reg_err=password'); die();}
                    }else{ header('Location: inscription.php?reg_err=email'); die();}
                }else{ header('Location: inscription.php?reg_err=email_length'); die();}
            }else{ header('Location: inscription.php?reg_err=pseudo_length'); die();}
        }else{ header('Location: inscription.php?reg_err=already'); die();}
    }
?>